/*
这段代码是 Node.js 脚本，用于在文件系统中复制文件和文件夹。
*/



/*
这里引入了 Node.js 的核心模块 fs（文件系统）和 path（路径处理）。
*/
const fs = require('fs')
const path = require('path')

/*
该行代码读取了指定路径下的文件（pnxclient.js）的内容，并将其保存到变量 json 中。
*/
let json = fs.readFileSync(path.resolve(__dirname, './src/pages/pnxclient.js'), 'utf8')
/*
这行代码将之前读取的文件内容写入到指定路径下的文件中（./dist/pnxclient.js）。
*/
fs.writeFileSync(path.resolve(__dirname, './dist/pnxclient.js'), json.toString())
let bp_json = fs.readFileSync(path.resolve(__dirname, './src/pages/bpr.js'), 'utf8')
fs.writeFileSync(path.resolve(__dirname, './dist/bpr.js'), bp_json.toString())

/*
copyFileSync 复制文件函数
这是一个用于复制单个文件的函数，接受源文件路径和目标文件路径作为参数。
*/
function copyFileSync(source, target) {
	var targetFile = target
	//if target is a directory a new file with the same name will be created
	if (fs.existsSync(target)) {
		if (fs.lstatSync(target).isDirectory()) {
			targetFile = path.join(target, path.basename(source))
		}
	}

	fs.writeFileSync(targetFile, fs.readFileSync(source))
}

/*
copyFolderRecursiveSync 递归复制文件夹函数

这是一个用于递归复制文件夹的函数，接受源文件夹路径和目标文件夹路径作为参数。
*/
function copyFolderRecursiveSync(source, target) {
	var files = []

	//check if folder needs to be created or integrated
	var targetFolder = path.join(target, path.basename(source))
	if (!fs.existsSync(targetFolder)) {
		fs.mkdirSync(targetFolder)
	}

	//copy
	if (fs.lstatSync(source).isDirectory()) {
		files = fs.readdirSync(source)
		files.forEach(function (file) {
			var curSource = path.join(source, file)
			if (fs.lstatSync(curSource).isDirectory()) {
				copyFolderRecursiveSync(curSource, targetFolder)
			} else {
				// copyFileSync(curSource, targetFolder)
				if (curSource.indexOf('index.ts') < 0) {
					copyFileSync(curSource, targetFolder)
				}
			}
		})
	}
}
/*
开始复制文件夹

这行代码调用了上述定义的复制文件夹的函数，将 ./src/pages/brand 文件夹中的内容复制到 ./dist 文件夹中。
*/

copyFolderRecursiveSync(path.resolve(__dirname, './src/pages/brand'), path.resolve(__dirname, './dist'))
copyFolderRecursiveSync(path.resolve(__dirname, './src/i18n'), path.resolve(__dirname, './dist'))
console.log('copy ok')
